USB is a peripheral interface for attaching a wide variety of computing devices, such as, for example, personal computers, digital telephone lines, monitors, modems, mice, printers, scanners, game controllers, keyboards, and the like. The specifications defining USB (e.g. Intel et al., Universal Serial Bus Specification, Revision 1.0, January 1996; updated as Revision 1.1 in September 1998; further updated as Revision 2.0 in April 2000; further updated as Revision 3.0 in November, 2008, and subsequent updates and modifications—hereinafter collectively referred to as the “USB Specifications”, which term can include future modifications and revisions) are non-proprietary and are managed by an open industry organization known as the USB Forum. The USB Specifications establish basic criteria that must be met in order to comply with USB standards. One of ordinary skill in the art will recognize many terms herein from the USB Specifications. Those terms are used herein in a similar manner to their use in the USB Specifications, unless otherwise stated.
It is a requirement of Revision 1.0 of the USB Specification that a single USB domain shall support up to 127 devices operating over a shared medium providing a maximum bandwidth of 12 Mbps. Revision 2.0 increases the maximum bandwidth to 480 Mbps while maintaining compatibility with devices manufactured under the criteria of Revision 1.1. Under the USB Specifications, a host controller that supports a maximum signaling rate of 12 Mbps is referred to as a full-speed host. A host controller that supports a signaling rate of 480 Mbps is referred to as a high-speed host. A full-speed host controller conforming to the USB Specifications supports two classes of devices, namely, low-speed devices and full-speed devices. A high-speed host controller conforming to the USB Specifications supports three classes of devices, namely, low-speed devices, full-speed devices, and high-speed devices. Low-speed devices have a maximum signaling rate of 1.5 Mbps, full-speed devices have a maximum signaling rate of 12 Mbps, and high-speed devices have a maximum signaling rate of 480 Mbps. Revision 3.0 of the USB Specification requires that compatible USB 3.0 devices must implement device framework commands and descriptors as defined in the USB Revision 2.0 Specification.
The USB Specifications provide strict timing guidelines for certain types of communication between a host controller and connected devices. For example, low-level signaling for bus events such as reset events, suspend events, and resume events are driven by signals that use timings that are, for example, shorter than 3 ms. The signaling rate and propagation speed of signals through copper wire limits a distance at which a round trip communication may comply with such timing.
As a further example, with respect to structured packetized signaling, the USB Specifications state that when a full-speed host controller instructs a particular device to place its information onto the shared bus, the requested information must be received by the host controller within 16 full-speed bit-times of the host controller issuing said instruction. Similarly, when a high-speed host controller instructs a particular device to place its information onto the shared bus, the requested information must be received by the host controller within 736 high-speed bit-times of the host controller issuing said instruction. Restriction on the response time ensures that the USB Specifications provide for a high efficiency of bandwidth utilization by limiting the period during which no information is being transmitted. However, these requirements also limit the physical range of USB devices since one bit-time at 12 Mbps, which is one full-speed bit-time, is equivalent to the time taken for an electronic signal to traverse approximately 17 meters of copper cable. One bit-time at 480 Mbps, which is one high-speed bit-time, is equivalent to the time taken for an electronic signal to traverse approximately 440 millimeters of cable.
Although the USB device must respond to a request from the full-speed host controller within 16 full-speed bit-times, 7.5 full-speed bit-times is allocated for delay within a full or low-speed USB device and its associated 5-meter cable. This allocation retains only 8.5 full-speed bit-times at 12 Mbps for additional cable delay. The time represented by 8.5 full-speed bit-times is equivalent to the delay incurred by electronic signals in traversing approximately 144 meters of cable.
For the high-speed host controller, a device must respond to the host controller within 736 high-speed bit-times, and 217 high-speed bit-times of the restricted response time of 736 high-speed bit-times is allocated for delay within a high-speed USB device and its 5-meter cable. This allocation thus retains 519 full-speed bit-times at 480 Mbps for additional cable delay. The time represented by 519 high-speed bit-times represents a distance of 227 meters of cable. However, according to the USB Specifications, a high-speed host must also support full and low-speed devices which operate under the full-speed bus. The time allocated for delay within a full or low-speed USB device and its associated 5-meter cable is 7.5 full-speed bit-times which is equivalent to 300 high-speed bit-times. Therefore, in the case where data is transferred between a high-speed host and a full or low-speed USB device, only 436 bit-times are retained for additional cable delay. The time represented by 436 bit-times at 480 Mbps is equivalent to a cable distance of 190 meters. In order to maintain compatibility with full and low-speed devices, the maximum cable length for high speed is then restricted to 190 meters which does not meet the specified round trip cable length of 200 meters.
Accordingly, under Revision 2.0 of the USB Specification, the distance that a device can be separated from its host is limited to 5 meters. The maximum distance supported by Revision 2.0 is 30 meters, as a USB device may be connected to a series of USB hubs, up to a maximum of five hubs. However, using five hubs and six 5-meter cables, placed between the hubs, to support a USB device at a range of up to 30 meters will generally be an expensive and clumsy solution as it may require use and purchase of otherwise unnecessary hubs and at least two of the five hubs must be provided with external electrical power. In addition, using standard 5-meter cables between hubs would mean that some hubs might have to be placed in insecure and inconvenient locations to cover the longer distance. Further, a range of 30 meters is still limiting for some applications.
Currently, devices that comply with one or more of the USB Specifications are not capable of correctly propagating USB bus events over longer distances. Particularly, a host controller communicating over previous technologies used to span longer distances does not retain the ability to control the state and speed of the system. Therefore, a new method and apparatus are needed to optionally allow for extension of a USB device to a distance greater than five meters from the USB hub to which it is in direct communication, such that USB bus events may be propagated between the USB hub and the USB device despite a greater delay in signal transmission.